/*
ajax请求函数模块
返回值: promise对象(异步返回的数据是: response.data)
 */
import axios from 'axios'
import qs from 'qs'

// http response 拦截器
axios.interceptors.response.use(
	response => {
		return response;
	},
	error => {
		return Promise.reject(error.response.data) // 返回接口返回的错误信息
	});

export default function ajax(url, data = {}, type = 'GET') {
	
	const debug = (process.env.NODE_ENV !== 'production')
	if (debug) {
		url = 'api/' + url
	}

	return new Promise(function(resolve, reject) {
		// 执行异步ajax请求
		let promise;
		if (type === 'GET') {
			// 准备url query参数数据
			let dataStr = ''; //数据拼接字符串

			Object.keys(data).forEach(key => {
				dataStr += key + '=' + data[key] + '&'
			});
			if (dataStr !== '') {
				dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
				url = url + '?' + dataStr
			}
			// 发送get请求
			promise = axios.get(url)
		} else {
			// 发送post请求 
			promise = axios.post(url, qs.stringify(data), {
				headers: {
					'Content-Type': 'application/x-www-form-urlencoded'
				}
			})
		}
		promise.then(function(response) {

			// 成功了调用resolve()
			resolve(response.data)
		}).catch(function(error) {
			//失败了调用reject()
			reject(error)
		})
	})
}
